<?php
    require_once '/Controller/LoginController.php';
	require_once '/Model/LoginHandler.php';
	require_once '/View/LoginView.php';
	require_once '/Controller/RegisterController.php';
	require_once '/Model/RegisterHandler.php';
	require_once '/View/RegisterView.php';
	require_once '/General/dbConnection.php';
	require_once '/General/validate.php';
	require_once("./Model/m_Logger.php");
	
	class TestClass {
		
		public function Test()
		{
			$Logger = new m_Logger();
			
			$lh = new LoginHandler();
			$lw = new LoginView();
			$lc = new LoginController();
			$rw = new RegisterView();
			$rc = new RegisterController();
			$rh = new RegisterHandler();
			$db = new DBConnection();
			$validate = new validate();
			
			$m_wrongUser = "Testar";
			$m_wrongPass = "TEstarlite12";
			$m_correctUser = "administrator";
			$m_correctPass = "ond8910S";
			
			//Test för LoginHandler.php
			if ($db->Connect() == false){
				echo "0. Databaskoppling saknas";
				return false;	
			}
			$db->Close();					
			$lh->DoLogout();
			if ($lh->IsLoggedIn() == true){
				echo "1. Inloggningsfel";
				$Logger->setLogMessage('$lh->IsLoggedIn() funkar itne');
				return false;
				}	
			if ($lh->DoLoginDB($m_wrongUser."1", $m_wrongPass) == true){
				echo "2. Inloggad mot DB trots fel användare & lösenord";
				$Logger->setLogMessage('$lh->DoLoginDB() funkar inte, inloggad mot DB trots fel användare & lösenord');
				return false;
			}
			if ($lh->DoLoginDB($m_correctUser, $m_correctPass) == false){
				echo "3. Inloggning mot DB misslyckas trots korrekta uppgifter";
				$Logger->setLogMessage('$lh->DoLoginDB() funkar itne, nloggning mot DB misslyckas trots korrekta uppgifter');
				return false;
			}	
			if ($lh->IsLoggedIn() == false){
				echo "4. Är inte inloggad men borde vara.";
				$Logger->setLogMessage('$lh->IsLoggedIn() funkar itne, är inte inloggad men borde vara.');
				return false;
			}
			$lh->DoLogout();
			
			if ($lh->IsLoggedIn() == true){
				echo "5. Inloggningsfel";
				$Logger->setLogMessage('$lh->IsLoggedIn() funkar itne');
				return false;
			}
			if ($lh->DoLoginDB($m_correctUser, $m_wrongPass) == true){
				echo "6. Rätt användare på DB, fel lösen";
				$Logger->setLogMessage('$lh->DoLoginDB() funkar itne, rätt användare på DB, fel lösen');
				return false;
			}

			//Tester för LoginView.php
			$lw->SetOkLogin($m_correctUser, $m_correctPass);
			if (isset($_COOKIE['user']) == false){
				echo "7. Cookie sätts ej";
				return false;				
			}
			$lw->DeleteCookie();
			if (isset($_COOKIE['user']) == false){
				echo "8. Cookie tas ej bort";	
				return false;
			}
			
			
			//Tester för RegisterView.php & RegisterHandler.php
			if ($validate->password($m_wrongPass) == false){
				echo "9. Lösenorden skall ha en minimilängd på 8 tecken";
				return false;
			}
			if ($validate->textStrict("") == false){
				echo "10. Nya användare får inte ha tomt användarnamn";
				return false;
			}
			if ($rh->CheckIfRegistered('Patrik') == true){
				echo "11. användaren finns redan i systemet";
				return false;
			}
			if ($rh->RemoveFromDB("Jocke") == false){
				echo "12. Användare togs inte bort";
				return false;
			}
			if ($rh->CheckIfRegistered('Jocke') == true){
				echo "13. Användare finns ändå kvar";
				return false;
			}
			if ($rh->RegisterToDB("Jppp12", "PassWord12") == false){
				echo "14. Går inte skapa användare";
				return false;
			}
			
			return true;		
		}
	}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Testdriven utveckling</title>
   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  </head>
  <body>
  	<?php
		echo "<h1>Enhetstester</h1>";

		echo "<h2>Test</h2>";		
		$test = new TestClass();
		if ($test->Test() == true) {
			echo "<p>Test ok</p>";
		} else {
			echo "<p>Test fungerar ej</p>";
		}?>
</body>
</html>